home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / modules / nessus-2.2.8.mo / usr / lib / nessus / plugins / smb_hotfixes.inc < prev    next >
Text File  |  2005-03-31  |  5KB  |  235 lines

  1. #
  2. # (C) Tenable Network Security
  3. #
  4. # $Id: smb_hotfixes.inc,v 1.11 2005/03/31 04:38:04 renaud Exp $
  5.  
  6. include("global_settings.inc");
  7.  
  8. function hotfix_check_exchange_installed()
  9. {
  10.  local_var vers;
  11.  
  12.  vers = get_kb_item("SMB/Registry/HKLM/SOFTWARE/Microsoft/Exchange/Setup/ServicePackBuild");
  13.  if ( ! vers ) 
  14.     return NULL;
  15.  else 
  16.     return vers;
  17. }
  18.  
  19. function hotfix_data_access_version()
  20. {
  21.  local_var vers;
  22.  
  23.  vers = get_kb_item("SMB/Registry/HKLM/SOFTWARE/Microsoft/DataAccess/Version");
  24.  if ( ! vers ) 
  25.     return NULL;
  26.  else 
  27.     return vers;
  28. }
  29.  
  30. #
  31. # Returns 1 if Office is installed, 0 if it is not
  32. #
  33. function hotfix_check_office_installed()
  34. {
  35.  local_var flag;
  36.  
  37.  flag = get_kb_item("SMB/Registry/HKLM/SOFTWARE/Microsoft/Office");
  38.  if ( ! flag ) 
  39.     return 0;
  40.  else
  41.     return 1;
  42. }
  43.  
  44. #
  45. # Returns 1 if Works is installed, 0 if it is not
  46. #
  47. function hotfix_check_works_installed()
  48. {
  49.  local_var flag;
  50.  
  51.  flag = get_kb_item("SMB/Registry/HKLM/SOFTWARE/Microsoft/Works");
  52.  if ( ! flag ) 
  53.     return 0;
  54.  else
  55.     return 1;
  56. }
  57.  
  58.  
  59.  
  60. #
  61. # Returns 1 if IIS is installed, 0 if it is not and -1 if we don't know
  62. #
  63. function hotfix_check_iis_installed()
  64. {
  65.  local_var w3svc;
  66.  
  67.  w3svc = get_kb_item("SMB/Registry/HKLM/SYSTEM/CurrentControlSet/Services/W3SVC/ImagePath");
  68.  if ( ! w3svc ) return -1;
  69.  if ( "inetinfo" >!< w3svc )
  70.     return 0;
  71.  else
  72.     return 1;
  73. }
  74.  
  75. #
  76. # Returns 1 if WINS is installed, 0 if it is not and -1 if we don't know
  77. #
  78. function hotfix_check_wins_installed()
  79. {
  80.  local_var wins;
  81.  
  82.  wins = get_kb_item("SMB/Registry/HKLM/SYSTEM/CurrentControlSet/Services/WINS/DisplayName");
  83.  if ( ! wins ) return -1;
  84.  else
  85.     return 1;
  86. }
  87.  
  88. # Returns 1 if a DHCP server is installed, 0 if it is not and -1 if we don't know
  89. #
  90. function hotfix_check_dhcpserver_installed()
  91. {
  92.  
  93.  local_var dhcp;
  94.  dhcp = get_kb_item("SMB/Registry/HKLM/SYSTEM/CurrentControlSet/Services/DHCPServer");
  95.  if ( ! dhcp ) return -1;
  96.  else
  97.     return 1;
  98. }
  99.  
  100. function hotfix_check_nt_server()
  101. {
  102.  local_var product_options;
  103.  product_options = get_kb_item("SMB/Registry/HKLM/SYSTEM/CurrentControlSet/Control/ProductOptions");
  104.  if ( ! product_options ) return -1;
  105.  if ("WinNT" >< product_options ) 
  106.     return 0;
  107.  else
  108.     return 1;
  109. }
  110.  
  111. function hotfix_check_domain_controler()
  112. {
  113.  local_var product_options;
  114.  product_options = get_kb_item("SMB/Registry/HKLM/SYSTEM/CurrentControlSet/Control/ProductOptions");
  115.  if ( ! product_options ) return -1;
  116.  if ("LanmanNT" >< product_options ) 
  117.     return 1;
  118.  else
  119.     return 0;
  120. }
  121.  
  122. function hotfix_get_programfilesdir()
  123. {
  124.  local_var str;
  125.  str = get_kb_item("SMB/Registry/HKLM/SOFTWARE/Microsoft/Windows/CurrentVersion/ProgramFilesDir");
  126.  return str;
  127. }
  128.  
  129. function hotfix_get_commonfilesdir()
  130. {
  131.  local_var str;
  132.  str = get_kb_item("SMB/Registry/HKLM/SOFTWARE/Microsoft/Windows/CurrentVersion/CommonFilesDir");
  133.  return str;
  134. }
  135.  
  136. function hotfix_get_systemroot()
  137. {
  138.  local_var str;
  139.  str = get_kb_item("SMB/Registry/HKLM/SOFTWARE/Microsoft/Windows/CurrentVersion/SystemRoot");
  140.  return str;
  141. }
  142.  
  143. function hotfix_check_sp(nt, win2k, xp, win2003)
  144. {
  145.   local_var vers, sp;
  146.  
  147.   vers = get_kb_item("SMB/WindowsVersion");
  148.   if ( ! vers ) return -1;
  149.  
  150.  
  151.  
  152.   if ( nt &&  "4.0" >< vers )
  153.   {
  154.     sp  = get_kb_item("SMB/CSDVersion");
  155.     if ( sp )
  156.         sp   = int(ereg_replace(string:sp, pattern:".*Service Pack ([0-9]).*", replace:"\1"));
  157.     else
  158.     sp = 0;
  159.  
  160.     if ( sp < nt )
  161.      return 1;
  162.     else 
  163.     return 0; 
  164.   }   
  165.   else if ( win2k &&  "5.0" >< vers )
  166.   {
  167.     sp  = get_kb_item("SMB/CSDVersion");
  168.     if ( sp ) 
  169.         sp   = int(ereg_replace(string:sp, pattern:".*Service Pack ([0-9]).*", replace:"\1"));
  170.     else
  171.     sp = 0;
  172.     if ( sp < win2k )
  173.      return 1;
  174.     else 
  175.     return 0; 
  176.   }   
  177.   else if ( xp &&  "5.1" >< vers )
  178.   {
  179.     sp  = get_kb_item("SMB/CSDVersion");
  180.     if ( sp )
  181.         sp   = int(ereg_replace(string:sp, pattern:".*Service Pack ([0-9]).*", replace:"\1"));
  182.     else
  183.     sp = 0;
  184.     if ( sp < xp )
  185.      return 1;
  186.     else 
  187.     return 0; 
  188.   }   
  189.   else if ( win2003 &&  "5.2" >< vers )
  190.   {
  191.     sp  = get_kb_item("SMB/CSDVersion");
  192.     if ( sp ) 
  193.         sp   = int(ereg_replace(string:sp, pattern:".*Service Pack ([0-9]).*", replace:"\1"));
  194.     else
  195.     sp = 0;
  196.  
  197.     if ( sp < win2003 )
  198.      return 1;
  199.     else 
  200.     return 0; 
  201.   }   
  202.  
  203.   return -1; 
  204. }
  205.  
  206. #-----------------------------------------------------------------------------
  207. # hotfix_missing()
  208. #
  209. # Returns:
  210. # -1 : Could not verify if the hotfix is installed (ie: lack of credentials)
  211. #  0 : The hotfix is installed
  212. #  1 : The hotfix is missing
  213. #-----------------------------------------------------------------------------
  214. function hotfix_missing(name)
  215. {
  216.  local_var kb, key;
  217.  
  218.  
  219.  kb = get_kb_list("SMB/Registry/*");
  220.  if ( isnull(kb) || max_index(make_list(keys(kb))) == 0 )
  221.  {
  222.    return -1;
  223.  }
  224.  
  225.  # Don't get confused by QNNNNN vs KBNNNNN updates - look for both formats
  226.  if ( "KB" >< name ) name = name - "KB";
  227.  else if ( "Q" >< name ) name = name - "Q";
  228.  foreach key (keys(kb))
  229.  {
  230.   if ( ereg(pattern:"SMB/Registry/HKLM/SOFTWARE/Microsoft/(Updates|/Windows NT/CurrentVersion/HotFix)/.*/(KB|Q)" + name, string:key) )
  231.     return 0; # The hotfix is installed
  232.  }
  233.   return 1; # The hotfix is indeed missing
  234. }
  235.